import java.util.*;


public class Main {
    public static int m,n;
    public static Map<Integer,Integer> hash=new HashMap<>();

    public static boolean check(int x){
        int g=0;
        for(int a:hash.values()){
            g+=a/x+(a%x==0?0:1);
        }
        return g<=m;
    }
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        n=in.nextInt();
        m=in.nextInt();
        int hmax=0;
        for(int i=0;i<n;i++){
            int x=in.nextInt();
            hash.put(x,hash.getOrDefault(x,0)+1);
            hmax=Math.max(hmax,hash.get(x));
        }
        int kinds=hash.size();
        if(kinds>m){
            System.out.println(-1);
        }else{
            //暴力解法
//            for(int i=1;i<hmax;i++){
//                if(check(i)){
//                    System.out.println(i);
//                }
//            }
            //二分解法
            int l=0,r=hmax;
            while(l<r){
                int mid=(l+r)/2;
                if(check(mid)){
                    r=mid;
                }else{
                    l=mid+1;
                }
            }
            System.out.println(l);
        }


    }
}